package com.dao;

import java.util.List;

import org.springframework.jdbc.core.PreparedStatementCreator;
import org.springframework.jdbc.core.PreparedStatementSetter;
import org.springframework.jdbc.core.RowMapper;
import org.springframework.jdbc.support.KeyHolder;

public abstract class IJdbcDAO {

	/**
	 * 执行sql语句，实现修改功能
	 * @param sql
	 * @param args
	 */
	public abstract void update(String sql);
	public abstract void update(String sql, Object[] args);
	public abstract void update(String sql, PreparedStatementSetter pss) ;
	/**
	 * 执行sql语句，实现添加功能
	 * @param sql
	 * @param args
	 */
	public abstract void save(String sql, Object[] args);
	//返回类型 主键
	public abstract KeyHolder saveandgetkey(PreparedStatementCreator psc);
	/**
	 * 执行sql语句，实现删除功能
	 * @param sql
	 * @param args
	 */
	public abstract void delete(String sql);
	public abstract void delete(String sql, Object[] args);
	/**
	 * 获取记录总数目
	 * @param sql
	 * @param args
	 * @return
	 */
	public abstract int getCount(String sql, Object[] args);
	/**
	 * 查询并返回结果集
	 * @param sql
	 * @param args
	 * @param rowMapper
	 * @return
	 */
	@SuppressWarnings("unchecked")
	public abstract List getList(String sql, Object[] args,RowMapper rowMapper);

	//返回单个对象(SQL语句第一个对应的值)
	@SuppressWarnings("unchecked")
	public abstract Object getObject(String sql, Object[] args,Class requiredType);
	//返回单个对象
	public abstract Object getObject(String sql, Object[] args,RowMapper rowMapper);
}
